package com.hbnu.system.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.hbnu.system.config.PostDeserializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * <p>
 * 
 * </p>
 *
 * @author ${author}
 * @since 2023-05-16
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("opus")
public class Opus implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键 作品编号
     */
    @ApiModelProperty(value = "主键 作品编号")
    @TableId(value = "OpusID", type = IdType.ASSIGN_ID)
    private String OpusID;

    /**
     * 统计分类
     */
    @ApiModelProperty(value = "统计分类")
    @TableField("classifi")
    private String classifi;

    /**
     * 所属机构
     */
    @ApiModelProperty(value = "所属机构")
    @TableField("organization")
    private String organization;

    /**
     * 作品名称
     */
    @ApiModelProperty(value = "作品名称")
    @TableField("opusName")
    private String opusName;

    /**
     * 出版物名称
     */
    @ApiModelProperty(value = "出版物名称")
    @TableField("publicationName")
    private String publicationName;

    /**
     * 出版社级别
     */
    @ApiModelProperty(value = "出版社级别")
    @TableField("publicationLevel")
    private String publicationLevel;

    /**
     * 创作作品类型
     */
    @ApiModelProperty(value = "创作作品类型")
    @TableField("opusType")
    private String opusType;

    /**
     * 第一作者
     */
    @ApiModelProperty(value = "第一作者")
    @TableField("leadAuthor")
    private String leadAuthor;

    /**
     * 出版日期
     */
    @ApiModelProperty(value = "出版日期")
    @TableField("publicDate") //fill = FieldFill.INSERT 自动填入
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate publicDate;

    /**
     * 出版物面数（面
     */
    @ApiModelProperty(value = "出版物面数（面")
    @TableField("publicationNum")
    private String publicationNum;

    /**
     * 创作著作类别
     */
    @ApiModelProperty(value = "创作著作类别")
    @TableField("opusCate")
    private String opusCate;

    /**
     * 作品来源
     */
    @ApiModelProperty(value = "作品来源")
    @TableField("opusOrigin")
    private String opusOrigin;

    /**
     * 研究类别
     */
    @ApiModelProperty(value = "研究类别")
    @TableField("researchCate")
    private String researchCate;

    /**
     * 一级学科
     */
    @ApiModelProperty(value = "一级学科")
    @TableField("firstDiscipline")
    private String firstDiscipline;

    /**
     * 二级学科
     */
    @ApiModelProperty(value = "二级学科")
    @TableField("secondaryDiscipline")
    private String secondaryDiscipline;

    /**
     * 附件
     */
    @ApiModelProperty(value="附件")
    @JsonDeserialize(using = PostDeserializer.class)
    private byte[] annex;


    /**
     * 备注
     */
    @ApiModelProperty(value = "备注")
    @TableField("notes")
    private String notes;

    /**
     * 录入人
     */
    @ApiModelProperty(value = "录入人")
    @TableField("entered")
    private String entered;

    /**
     * 录入日期
     */
    @ApiModelProperty(value = "录入日期")
    @TableField("enteredDate") //fill = FieldFill.INSERT 自动填入
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime enteredDate;

    /**
     * 所有作者
     */
    @ApiModelProperty(value = "所有作者")
    @TableField("allAuthor")
    private String allAuthor;

    /**
     * 关联项目
     */
    @ApiModelProperty(value = "关联项目")
    @TableField("associatedProjects")
    private String associatedProjects;

    /**
     * 审核状态
     */
    @ApiModelProperty(value = "审核状态")
    @TableField("status")
    private String status;

    /**
     * 未通过原因
     */
    @ApiModelProperty(value="未通过原因")
    @TableField(value = "reason")
    private String reason;

    /**
     * 审核学院
     */
    @ApiModelProperty(value="所属学院")
    @TableField(value = "dept")
    private String dept;

}
